{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Tests ForecasterAutoregMultiseries when series have different lengths and different exogenous variables"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The autoreload extension is already loaded. To reload it, use:\n",
      "  %reload_ext autoreload\n",
      "/home/ubuntu/varios/skforecast\n",
      "Python version: 3.12.9 | packaged by Anaconda, Inc. | (main, Feb  6 2025, 18:56:27) [GCC 11.2.0]\n",
      "skforecast version: 0.15.0\n",
      "lightgbm version: 4.6.0\n",
      "sklearn version: 1.5.2\n",
      "Last execution: 2025-03-13 12:43:47.431284\n"
     ]
    }
   ],
   "source": [
    "%load_ext autoreload\n",
    "%autoreload 2\n",
    "import sys\n",
    "from pathlib import Path\n",
    "path = str(Path.cwd().parent.parent)\n",
    "sys.path.insert(1, path)\n",
    "print(path)\n",
    "\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import joblib\n",
    "import matplotlib.pyplot as plt\n",
    "from tqdm.notebook import tqdm\n",
    "from skforecast.plot import set_dark_theme\n",
    "import skforecast\n",
    "import lightgbm\n",
    "import sklearn\n",
    "from lightgbm import LGBMRegressor\n",
    "from sklearn.linear_model import LinearRegression\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.model_selection import ParameterGrid\n",
    "from sklearn.metrics import mean_absolute_percentage_error\n",
    "from skforecast.metrics import mean_absolute_scaled_error\n",
    "from skforecast.metrics import root_mean_squared_scaled_error\n",
    "from skforecast.preprocessing import series_long_to_dict\n",
    "from skforecast.preprocessing import exog_long_to_dict\n",
    "from skforecast.recursive import ForecasterRecursiveMultiSeries\n",
    "from skforecast.model_selection import (\n",
    "    TimeSeriesFold,\n",
    "    OneStepAheadFold,\n",
    "    backtesting_forecaster_multiseries,\n",
    "    bayesian_search_forecaster_multiseries,\n",
    "    grid_search_forecaster_multiseries\n",
    ")\n",
    "import warnings\n",
    "import sys\n",
    "\n",
    "print(f\"Python version: {sys.version}\")\n",
    "print(f\"skforecast version: {skforecast.__version__}\")\n",
    "print(f\"lightgbm version: {lightgbm.__version__}\")\n",
    "print(f\"sklearn version: {sklearn.__version__}\")\n",
    "print(f\"Last execution: {pd.Timestamp.now()}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Load time series of multiple lengths\n",
    "# ==============================================================================\n",
    "# series_dict = joblib.load('sample_multi_series.joblib')\n",
    "# exog_dict = joblib.load('sample_multi_series_exog.joblib')\n",
    "series = pd.read_csv(\"../fixtures/sample_multi_series.csv\")\n",
    "exog = pd.read_csv(\"../fixtures/sample_multi_series_exog.csv\")\n",
    "series[\"timestamp\"] = pd.to_datetime(series[\"timestamp\"])\n",
    "exog[\"timestamp\"] = pd.to_datetime(exog[\"timestamp\"])\n",
    "\n",
    "series_dict = series_long_to_dict(\n",
    "    data=series, series_id=\"series_id\", index=\"timestamp\", values=\"value\", freq=\"D\"\n",
    ")\n",
    "exog_dict = exog_long_to_dict(\n",
    "    data=exog, series_id=\"series_id\", index=\"timestamp\", freq=\"D\"\n",
    ")\n",
    "series_dict[\"id_1002\"].at[\"2016-02-01\"] = np.nan\n",
    "series_dict[\"id_1002\"].at[\"2016-05-01\"] = np.nan\n",
    "exog_dict[\"id_1000\"] = exog_dict[\"id_1000\"].drop(\n",
    "    columns=[\"air_temperature\", \"wind_speed\"]\n",
    ")\n",
    "exog_dict[\"id_1003\"] = exog_dict[\"id_1003\"].drop(columns=[\"cos_day_of_week\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Partition data in train and test\n",
    "# ==============================================================================\n",
    "end_train = \"2016-07-31 23:59:00\"\n",
    "series_dict_train = {k: v.loc[:end_train,] for k, v in series_dict.items()}\n",
    "exog_dict_train = {k: v.loc[:end_train,] for k, v in exog_dict.items()}\n",
    "series_dict_test = {k: v.loc[end_train:,] for k, v in series_dict.items()}\n",
    "exog_dict_test = {k: v.loc[end_train:,] for k, v in exog_dict.items()}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 800x400 with 5 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plot series\n",
    "# ==============================================================================\n",
    "set_dark_theme()\n",
    "colors = plt.rcParams[\"axes.prop_cycle\"].by_key()[\"color\"]\n",
    "fig, axs = plt.subplots(5, 1, figsize=(8, 4), sharex=True)\n",
    "for i, s in enumerate(series_dict.values()):\n",
    "    axs[i].plot(s, label=s.name, color=colors[i])\n",
    "    axs[i].legend(loc=\"upper right\", fontsize=8)\n",
    "    axs[i].tick_params(axis=\"both\", labelsize=8)\n",
    "    axs[i].axvline(\n",
    "        pd.to_datetime(end_train), color=\"white\", linestyle=\"--\", linewidth=1\n",
    "    )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "id_1000:\n",
      "\tTrain: len=213, 2016-01-01 00:00:00 --- 2016-07-31 00:00:00\n",
      "\tTest : len=153, 2016-08-01 00:00:00 --- 2016-12-31 00:00:00\n",
      "id_1001:\n",
      "\tTrain: len=30, 2016-07-02 00:00:00 --- 2016-07-31 00:00:00\n",
      "\tTest : len=153, 2016-08-01 00:00:00 --- 2016-12-31 00:00:00\n",
      "id_1002:\n",
      "\tTrain: len=183, 2016-01-01 00:00:00 --- 2016-07-01 00:00:00\n",
      "\tTest : len=0\n",
      "id_1003:\n",
      "\tTrain: len=213, 2016-01-01 00:00:00 --- 2016-07-31 00:00:00\n",
      "\tTest : len=153, 2016-08-01 00:00:00 --- 2016-12-31 00:00:00\n",
      "id_1004:\n",
      "\tTrain: len=91, 2016-05-02 00:00:00 --- 2016-07-31 00:00:00\n",
      "\tTest : len=31, 2016-08-01 00:00:00 --- 2016-08-31 00:00:00\n"
     ]
    }
   ],
   "source": [
    "# Description of each partition\n",
    "# ==============================================================================\n",
    "for k in series_dict.keys():\n",
    "    print(f\"{k}:\")\n",
    "    try:\n",
    "        print(\n",
    "            f\"\\tTrain: len={len(series_dict_train[k])}, {series_dict_train[k].index[0]}\"\n",
    "            f\" --- {series_dict_train[k].index[-1]}\"\n",
    "        )\n",
    "    except:\n",
    "        print(f\"\\tTrain: len=0\")\n",
    "    try:\n",
    "        print(\n",
    "            f\"\\tTest : len={len(series_dict_test[k])}, {series_dict_test[k].index[0]}\"\n",
    "            f\" --- {series_dict_test[k].index[-1]}\"\n",
    "        )\n",
    "    except:\n",
    "        print(f\"\\tTest : len=0\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "id_1000:\n",
      "\t['sin_day_of_week', 'cos_day_of_week']\n",
      "id_1001:\n",
      "\t['sin_day_of_week', 'cos_day_of_week', 'air_temperature', 'wind_speed']\n",
      "id_1002:\n",
      "\t['sin_day_of_week', 'cos_day_of_week', 'air_temperature', 'wind_speed']\n",
      "id_1003:\n",
      "\t['sin_day_of_week', 'air_temperature', 'wind_speed']\n",
      "id_1004:\n",
      "\t['sin_day_of_week', 'cos_day_of_week', 'air_temperature', 'wind_speed']\n"
     ]
    }
   ],
   "source": [
    "# Exogenous variables for each series\n",
    "# ==============================================================================\n",
    "for k in series_dict.keys():\n",
    "    print(f\"{k}:\")\n",
    "    try:\n",
    "        print(f\"\\t{exog_dict[k].columns.to_list()}\")\n",
    "    except:\n",
    "        print(f\"\\tNo exogenous variables\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "4fe43d2f111042859c2681d1f00a0755",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/6 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Paramns: {'dropna_from_series': False, 'encoding': 'ordinal', 'interval': [5, 95], 'n_boot': 10}\n",
      "Paramns: {'dropna_from_series': False, 'encoding': 'onehot', 'interval': [5, 95], 'n_boot': 10}\n",
      "Paramns: {'dropna_from_series': False, 'encoding': 'ordinal_category', 'interval': [5, 95], 'n_boot': 10}\n",
      "Paramns: {'dropna_from_series': True, 'encoding': 'ordinal', 'interval': [5, 95], 'n_boot': 10}\n",
      "Paramns: {'dropna_from_series': True, 'encoding': 'onehot', 'interval': [5, 95], 'n_boot': 10}\n"
     ]
    },
    {
     "ename": "ValueError",
     "evalue": "X has 21 features, but LGBMRegressor is expecting 23 features as input.",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mValueError\u001b[0m                                Traceback (most recent call last)",
      "Cell \u001b[0;32mIn[11], line 29\u001b[0m\n\u001b[1;32m     15\u001b[0m forecaster \u001b[38;5;241m=\u001b[39m ForecasterRecursiveMultiSeries(\n\u001b[1;32m     16\u001b[0m     estimator\u001b[38;5;241m=\u001b[39mLGBMRegressor(\n\u001b[1;32m     17\u001b[0m         n_estimators\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m2\u001b[39m, random_state\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m123\u001b[39m, verbose\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m, max_depth\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m2\u001b[39m\n\u001b[0;32m   (...)\u001b[0m\n\u001b[1;32m     23\u001b[0m     transformer_exog\u001b[38;5;241m=\u001b[39mStandardScaler(),\n\u001b[1;32m     24\u001b[0m )\n\u001b[1;32m     25\u001b[0m forecaster\u001b[38;5;241m.\u001b[39mfit(\n\u001b[1;32m     26\u001b[0m     series\u001b[38;5;241m=\u001b[39mseries_dict_train, exog\u001b[38;5;241m=\u001b[39mexog_dict_train, suppress_warnings\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m,\n\u001b[1;32m     27\u001b[0m     store_in_sample_residuals\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[1;32m     28\u001b[0m )\n\u001b[0;32m---> 29\u001b[0m predictions \u001b[38;5;241m=\u001b[39m \u001b[43mforecaster\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpredict\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m     30\u001b[0m \u001b[43m    \u001b[49m\u001b[43msteps\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m5\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mexog\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mexog_dict_test\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msuppress_warnings\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\n\u001b[1;32m     31\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m     32\u001b[0m predictions_int \u001b[38;5;241m=\u001b[39m forecaster\u001b[38;5;241m.\u001b[39mpredict_interval(\n\u001b[1;32m     33\u001b[0m     steps\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m5\u001b[39m,\n\u001b[1;32m     34\u001b[0m     exog\u001b[38;5;241m=\u001b[39mexog_dict_test,\n\u001b[0;32m   (...)\u001b[0m\n\u001b[1;32m     37\u001b[0m     suppress_warnings\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m,\n\u001b[1;32m     38\u001b[0m )\n",
      "File \u001b[0;32m~/varios/skforecast/skforecast/recursive/_forecaster_recursive_multiseries.py:2443\u001b[0m, in \u001b[0;36mForecasterRecursiveMultiSeries.predict\u001b[0;34m(self, steps, levels, last_window, exog, suppress_warnings, check_inputs)\u001b[0m\n\u001b[1;32m   2437\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m warnings\u001b[38;5;241m.\u001b[39mcatch_warnings():\n\u001b[1;32m   2438\u001b[0m     warnings\u001b[38;5;241m.\u001b[39mfilterwarnings(\n\u001b[1;32m   2439\u001b[0m         \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mignore\u001b[39m\u001b[38;5;124m\"\u001b[39m, \n\u001b[1;32m   2440\u001b[0m         message\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mX does not have valid feature names\u001b[39m\u001b[38;5;124m\"\u001b[39m, \n\u001b[1;32m   2441\u001b[0m         category\u001b[38;5;241m=\u001b[39m\u001b[38;5;167;01mUserWarning\u001b[39;00m\n\u001b[1;32m   2442\u001b[0m     )\n\u001b[0;32m-> 2443\u001b[0m     predictions \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_recursive_predict\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m   2444\u001b[0m \u001b[43m                      \u001b[49m\u001b[43msteps\u001b[49m\u001b[43m            \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43msteps\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   2445\u001b[0m \u001b[43m                      \u001b[49m\u001b[43mlevels\u001b[49m\u001b[43m           \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mlevels\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   2446\u001b[0m \u001b[43m                      \u001b[49m\u001b[43mlast_window\u001b[49m\u001b[43m      \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mlast_window\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   2447\u001b[0m \u001b[43m                      \u001b[49m\u001b[43mexog_values_dict\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mexog_values_dict\u001b[49m\n\u001b[1;32m   2448\u001b[0m \u001b[43m                  \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m   2450\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, level \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(levels):\n\u001b[1;32m   2451\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdifferentiation \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdifferentiator_[level] \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n",
      "File \u001b[0;32m~/varios/skforecast/skforecast/recursive/_forecaster_recursive_multiseries.py:2198\u001b[0m, in \u001b[0;36mForecasterRecursiveMultiSeries._recursive_predict\u001b[0;34m(self, steps, levels, last_window, exog_values_dict, residuals, use_binned_residuals)\u001b[0m\n\u001b[1;32m   2195\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m exog_values_dict \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m   2196\u001b[0m     features[:, \u001b[38;5;241m-\u001b[39mn_exog:] \u001b[38;5;241m=\u001b[39m exog_values_dict[i \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m]\n\u001b[0;32m-> 2198\u001b[0m pred \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mestimator\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpredict\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfeatures\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m   2200\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m residuals \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m   2202\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m use_binned_residuals:\n",
      "File \u001b[0;32m~/anaconda3/envs/skforecast_15_py12/lib/python3.12/site-packages/lightgbm/sklearn.py:1108\u001b[0m, in \u001b[0;36mLGBMModel.predict\u001b[0;34m(self, X, raw_score, start_iteration, num_iteration, pred_leaf, pred_contrib, validate_features, **kwargs)\u001b[0m\n\u001b[1;32m   1106\u001b[0m     \u001b[38;5;28;01mraise\u001b[39;00m LGBMNotFittedError(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mEstimator not fitted, call fit before exploiting the model.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m   1107\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(X, (pd_DataFrame, dt_DataTable)):\n\u001b[0;32m-> 1108\u001b[0m     X \u001b[38;5;241m=\u001b[39m \u001b[43m_LGBMValidateData\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m   1109\u001b[0m \u001b[43m        \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1110\u001b[0m \u001b[43m        \u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1111\u001b[0m \u001b[43m        \u001b[49m\u001b[38;5;66;43;03m# 'y' being omitted = run scikit-learn's check_array() instead of check_X_y()\u001b[39;49;00m\n\u001b[1;32m   1112\u001b[0m \u001b[43m        \u001b[49m\u001b[38;5;66;43;03m#\u001b[39;49;00m\n\u001b[1;32m   1113\u001b[0m \u001b[43m        \u001b[49m\u001b[38;5;66;43;03m# Prevent scikit-learn from deleting or modifying attributes like 'feature_names_in_' and 'n_features_in_'.\u001b[39;49;00m\n\u001b[1;32m   1114\u001b[0m \u001b[43m        \u001b[49m\u001b[38;5;66;43;03m# These shouldn't be changed at predict() time.\u001b[39;49;00m\n\u001b[1;32m   1115\u001b[0m \u001b[43m        \u001b[49m\u001b[43mreset\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m   1116\u001b[0m \u001b[43m        \u001b[49m\u001b[38;5;66;43;03m# allow any input type (this validation is done further down, in lgb.Dataset())\u001b[39;49;00m\n\u001b[1;32m   1117\u001b[0m \u001b[43m        \u001b[49m\u001b[43maccept_sparse\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m   1118\u001b[0m \u001b[43m        \u001b[49m\u001b[38;5;66;43;03m# do not raise an error if Inf of NaN values are found (LightGBM handles these internally)\u001b[39;49;00m\n\u001b[1;32m   1119\u001b[0m \u001b[43m        \u001b[49m\u001b[43mensure_all_finite\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m   1120\u001b[0m \u001b[43m        \u001b[49m\u001b[38;5;66;43;03m# raise an error on 0-row inputs\u001b[39;49;00m\n\u001b[1;32m   1121\u001b[0m \u001b[43m        \u001b[49m\u001b[43mensure_min_samples\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1122\u001b[0m \u001b[43m    \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m   1123\u001b[0m \u001b[38;5;66;03m# retrieve original params that possibly can be used in both training and prediction\u001b[39;00m\n\u001b[1;32m   1124\u001b[0m \u001b[38;5;66;03m# and then overwrite them (considering aliases) with params that were passed directly in prediction\u001b[39;00m\n\u001b[1;32m   1125\u001b[0m predict_params \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_process_params(stage\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mpredict\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n",
      "File \u001b[0;32m~/anaconda3/envs/skforecast_15_py12/lib/python3.12/site-packages/lightgbm/compat.py:91\u001b[0m, in \u001b[0;36mvalidate_data\u001b[0;34m(_estimator, X, y, accept_sparse, ensure_all_finite, ensure_min_samples, **ignored_kwargs)\u001b[0m\n\u001b[1;32m     89\u001b[0m \u001b[38;5;66;03m# raise the same error that scikit-learn's `validate_data()` does on scikit-learn>=1.6\u001b[39;00m\n\u001b[1;32m     90\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m _estimator\u001b[38;5;241m.\u001b[39m__sklearn_is_fitted__() \u001b[38;5;129;01mand\u001b[39;00m _estimator\u001b[38;5;241m.\u001b[39m_n_features \u001b[38;5;241m!=\u001b[39m n_features_in_:\n\u001b[0;32m---> 91\u001b[0m     \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[1;32m     92\u001b[0m         \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mX has \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mn_features_in_\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m features, but \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m_estimator\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m     93\u001b[0m         \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mis expecting \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m_estimator\u001b[38;5;241m.\u001b[39m_n_features\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m features as input.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m     94\u001b[0m     )\n\u001b[1;32m     96\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m no_val_y:\n\u001b[1;32m     97\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m X\n",
      "\u001b[0;31mValueError\u001b[0m: X has 21 features, but LGBMRegressor is expecting 23 features as input."
     ]
    }
   ],
   "source": [
    "# Test predict\n",
    "# ==============================================================================\n",
    "params = {\n",
    "    \"encoding\": [\"ordinal\", \"onehot\", \"ordinal_category\"],\n",
    "    \"dropna_from_series\": [False, True],\n",
    "    \"interval\": [[5, 95]],\n",
    "    \"n_boot\": [10],\n",
    "}\n",
    "\n",
    "params_grid = list(ParameterGrid(params))\n",
    "\n",
    "for params in tqdm(params_grid):\n",
    "    print(f\"Paramns: {params}\")\n",
    "\n",
    "    forecaster = ForecasterRecursiveMultiSeries(\n",
    "        estimator=LGBMRegressor(\n",
    "            n_estimators=2, random_state=123, verbose=-1, max_depth=2\n",
    "        ),\n",
    "        lags=14,\n",
    "        encoding=params[\"encoding\"],\n",
    "        dropna_from_series=params[\"dropna_from_series\"],\n",
    "        transformer_series=StandardScaler(),\n",
    "        transformer_exog=StandardScaler(),\n",
    "    )\n",
    "    forecaster.fit(\n",
    "        series=series_dict_train, exog=exog_dict_train, suppress_warnings=True,\n",
    "        store_in_sample_residuals=True\n",
    "    )\n",
    "    predictions = forecaster.predict(\n",
    "        steps=5, exog=exog_dict_test, suppress_warnings=True\n",
    "    )\n",
    "    predictions_int = forecaster.predict_interval(\n",
    "        steps=5,\n",
    "        exog=exog_dict_test,\n",
    "        interval=params[\"interval\"],\n",
    "        n_boot=params[\"n_boot\"],\n",
    "        suppress_warnings=True,\n",
    "    )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "8dc94a0896884ab88cc8235db4335846",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/384 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': None, 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': None, 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': None, 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': None, 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': None, 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': None, 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': 'id_1000', 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': 'id_1000', 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': 'id_1000', 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': 'id_1000', 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': 'id_1000', 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': 'id_1000', 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001'], 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001'], 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001'], 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 213, 'levels': None, 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 213, 'levels': None, 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 213, 'levels': None, 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 213, 'levels': None, 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 213, 'levels': None, 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 213, 'levels': None, 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 213, 'levels': 'id_1000', 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 213, 'levels': 'id_1000', 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 213, 'levels': 'id_1000', 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 213, 'levels': 'id_1000', 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 213, 'levels': 'id_1000', 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 213, 'levels': 'id_1000', 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001'], 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001'], 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001'], 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 50, 'levels': None, 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 50, 'levels': None, 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 50, 'levels': None, 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 50, 'levels': None, 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 50, 'levels': None, 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 50, 'levels': None, 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 50, 'levels': 'id_1000', 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 50, 'levels': 'id_1000', 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 50, 'levels': 'id_1000', 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 50, 'levels': 'id_1000', 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 50, 'levels': 'id_1000', 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 50, 'levels': 'id_1000', 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001'], 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001'], 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001'], 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 213, 'levels': None, 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 213, 'levels': None, 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 213, 'levels': None, 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 213, 'levels': None, 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 213, 'levels': None, 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 213, 'levels': None, 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 213, 'levels': 'id_1000', 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 213, 'levels': 'id_1000', 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 213, 'levels': 'id_1000', 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 213, 'levels': 'id_1000', 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 213, 'levels': 'id_1000', 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 213, 'levels': 'id_1000', 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001'], 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001'], 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': True, 'gap': 7, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001'], 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 50, 'levels': None, 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 50, 'levels': None, 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 50, 'levels': None, 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 50, 'levels': None, 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 50, 'levels': None, 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 50, 'levels': None, 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 50, 'levels': 'id_1000', 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 50, 'levels': 'id_1000', 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 50, 'levels': 'id_1000', 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 50, 'levels': 'id_1000', 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 50, 'levels': 'id_1000', 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 50, 'levels': 'id_1000', 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001'], 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001'], 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001'], 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 213, 'levels': None, 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 213, 'levels': None, 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 213, 'levels': None, 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 213, 'levels': None, 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 213, 'levels': None, 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 213, 'levels': None, 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 213, 'levels': 'id_1000', 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 213, 'levels': 'id_1000', 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 213, 'levels': 'id_1000', 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 213, 'levels': 'id_1000', 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 213, 'levels': 'id_1000', 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 213, 'levels': 'id_1000', 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001'], 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001'], 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 0, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001'], 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 50, 'levels': None, 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 50, 'levels': None, 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 50, 'levels': None, 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 50, 'levels': None, 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 50, 'levels': None, 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 50, 'levels': None, 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 50, 'levels': 'id_1000', 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 50, 'levels': 'id_1000', 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 50, 'levels': 'id_1000', 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 50, 'levels': 'id_1000', 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 50, 'levels': 'id_1000', 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 50, 'levels': 'id_1000', 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001'], 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001'], 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001'], 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 213, 'levels': None, 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 213, 'levels': None, 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 213, 'levels': None, 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 213, 'levels': None, 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 213, 'levels': None, 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 213, 'levels': None, 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 213, 'levels': 'id_1000', 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 213, 'levels': 'id_1000', 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 213, 'levels': 'id_1000', 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 213, 'levels': 'id_1000', 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 213, 'levels': 'id_1000', 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 213, 'levels': 'id_1000', 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001'], 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001'], 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': True, 'fixed_train_size': False, 'gap': 7, 'initial_train_size': 213, 'levels': ['id_1000', 'id_1001'], 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': False, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': None, 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': False, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': None, 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': False, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': None, 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': False, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': None, 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': False, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': None, 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': False, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': None, 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': False, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': False, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': False, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': False, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': False, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': False, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001', 'id_1002', 'id_1003', 'id_1004'], 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': False, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': 'id_1000', 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': False, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': 'id_1000', 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': False, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': 'id_1000', 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': False, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': 'id_1000', 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': False, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': 'id_1000', 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': False, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': 'id_1000', 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': False, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': False, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': False, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001'], 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': False, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001'], 'metrics': 'mean_absolute_error', 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': False, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001'], 'metrics': 'mean_absolute_error', 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': False, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 50, 'levels': ['id_1000', 'id_1001'], 'metrics': 'mean_absolute_error', 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': False, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 213, 'levels': None, 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': True}\n",
      "Paramns: {'allow_incomplete_fold': False, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 213, 'levels': None, 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': False}\n",
      "Paramns: {'allow_incomplete_fold': False, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 213, 'levels': None, 'metrics': ['mean_absolute_error', 'mean_squared_error'], 'refit': 2}\n",
      "Paramns: {'allow_incomplete_fold': False, 'fixed_train_size': True, 'gap': 0, 'initial_train_size': 213, 'levels': None, 'metrics': 'mean_absolute_error', 'refit': True}\n"
     ]
    },
    {
     "ename": "KeyboardInterrupt",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
      "Cell \u001b[0;32mIn[21], line 43\u001b[0m\n\u001b[1;32m     23\u001b[0m forecaster \u001b[38;5;241m=\u001b[39m ForecasterRecursiveMultiSeries(\n\u001b[1;32m     24\u001b[0m     estimator\u001b[38;5;241m=\u001b[39mLGBMRegressor(\n\u001b[1;32m     25\u001b[0m         n_estimators\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m2\u001b[39m, random_state\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m123\u001b[39m, verbose\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m, max_depth\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m2\u001b[39m\n\u001b[0;32m   (...)\u001b[0m\n\u001b[1;32m     31\u001b[0m     transformer_exog\u001b[38;5;241m=\u001b[39mStandardScaler(),\n\u001b[1;32m     32\u001b[0m )\n\u001b[1;32m     34\u001b[0m cv \u001b[38;5;241m=\u001b[39m TimeSeriesFold(\n\u001b[1;32m     35\u001b[0m     initial_train_size\u001b[38;5;241m=\u001b[39mparams[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124minitial_train_size\u001b[39m\u001b[38;5;124m\"\u001b[39m],\n\u001b[1;32m     36\u001b[0m     steps\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m24\u001b[39m,\n\u001b[0;32m   (...)\u001b[0m\n\u001b[1;32m     40\u001b[0m     refit\u001b[38;5;241m=\u001b[39mparams[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mrefit\u001b[39m\u001b[38;5;124m\"\u001b[39m],\n\u001b[1;32m     41\u001b[0m )\n\u001b[0;32m---> 43\u001b[0m metrics_levels, backtest_predictions \u001b[38;5;241m=\u001b[39m \u001b[43mbacktesting_forecaster_multiseries\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m     44\u001b[0m \u001b[43m    \u001b[49m\u001b[43mforecaster\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mforecaster\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m     45\u001b[0m \u001b[43m    \u001b[49m\u001b[43mseries\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mseries_dict\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m     46\u001b[0m \u001b[43m    \u001b[49m\u001b[43mexog\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mexog_dict\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m     47\u001b[0m \u001b[43m    \u001b[49m\u001b[43mlevels\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mparams\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mlevels\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m     48\u001b[0m \u001b[43m    \u001b[49m\u001b[43mcv\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mcv\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m     49\u001b[0m \u001b[43m    \u001b[49m\u001b[43mmetric\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mparams\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmetrics\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m     50\u001b[0m \u001b[43m    \u001b[49m\u001b[43mshow_progress\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m     51\u001b[0m \u001b[43m    \u001b[49m\u001b[43msuppress_warnings\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m     52\u001b[0m \u001b[43m    \u001b[49m\u001b[43mn_jobs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mauto\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\n\u001b[1;32m     53\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n",
      "File \u001b[0;32m~/varios/skforecast/skforecast/model_selection/_validation.py:1158\u001b[0m, in \u001b[0;36mbacktesting_forecaster_multiseries\u001b[0;34m(forecaster, series, cv, metric, levels, add_aggregated_metric, exog, interval, interval_method, n_boot, use_in_sample_residuals, use_binned_residuals, random_state, n_jobs, verbose, show_progress, suppress_warnings)\u001b[0m\n\u001b[1;32m   1134\u001b[0m     \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m(\n\u001b[1;32m   1135\u001b[0m         \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m`forecaster` must be of type \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmulti_series_forecasters\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m, \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m   1136\u001b[0m         \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfor all other types of forecasters use the functions available in \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m   1137\u001b[0m         \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mthe `model_selection` module. Got \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mforecaster_name\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m   1138\u001b[0m     )\n\u001b[1;32m   1140\u001b[0m check_backtesting_input(\n\u001b[1;32m   1141\u001b[0m     forecaster              \u001b[38;5;241m=\u001b[39m forecaster,\n\u001b[1;32m   1142\u001b[0m     cv                      \u001b[38;5;241m=\u001b[39m cv,\n\u001b[0;32m   (...)\u001b[0m\n\u001b[1;32m   1155\u001b[0m     suppress_warnings       \u001b[38;5;241m=\u001b[39m suppress_warnings\n\u001b[1;32m   1156\u001b[0m )\n\u001b[0;32m-> 1158\u001b[0m metrics_levels, backtest_predictions \u001b[38;5;241m=\u001b[39m \u001b[43m_backtesting_forecaster_multiseries\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m   1159\u001b[0m \u001b[43m    \u001b[49m\u001b[43mforecaster\u001b[49m\u001b[43m              \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mforecaster\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1160\u001b[0m \u001b[43m    \u001b[49m\u001b[43mseries\u001b[49m\u001b[43m                  \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mseries\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1161\u001b[0m \u001b[43m    \u001b[49m\u001b[43mcv\u001b[49m\u001b[43m                      \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mcv\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1162\u001b[0m \u001b[43m    \u001b[49m\u001b[43mlevels\u001b[49m\u001b[43m                  \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mlevels\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1163\u001b[0m \u001b[43m    \u001b[49m\u001b[43mmetric\u001b[49m\u001b[43m                  \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mmetric\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1164\u001b[0m \u001b[43m    \u001b[49m\u001b[43madd_aggregated_metric\u001b[49m\u001b[43m   \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43madd_aggregated_metric\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1165\u001b[0m \u001b[43m    \u001b[49m\u001b[43mexog\u001b[49m\u001b[43m                    \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mexog\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1166\u001b[0m \u001b[43m    \u001b[49m\u001b[43minterval\u001b[49m\u001b[43m                \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43minterval\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1167\u001b[0m \u001b[43m    \u001b[49m\u001b[43minterval_method\u001b[49m\u001b[43m         \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43minterval_method\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1168\u001b[0m \u001b[43m    \u001b[49m\u001b[43mn_boot\u001b[49m\u001b[43m                  \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mn_boot\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1169\u001b[0m \u001b[43m    \u001b[49m\u001b[43muse_in_sample_residuals\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43muse_in_sample_residuals\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1170\u001b[0m \u001b[43m    \u001b[49m\u001b[43muse_binned_residuals\u001b[49m\u001b[43m    \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43muse_binned_residuals\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1171\u001b[0m \u001b[43m    \u001b[49m\u001b[43mrandom_state\u001b[49m\u001b[43m            \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mrandom_state\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1172\u001b[0m \u001b[43m    \u001b[49m\u001b[43mn_jobs\u001b[49m\u001b[43m                  \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mn_jobs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1173\u001b[0m \u001b[43m    \u001b[49m\u001b[43mverbose\u001b[49m\u001b[43m                 \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mverbose\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1174\u001b[0m \u001b[43m    \u001b[49m\u001b[43mshow_progress\u001b[49m\u001b[43m           \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mshow_progress\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1175\u001b[0m \u001b[43m    \u001b[49m\u001b[43msuppress_warnings\u001b[49m\u001b[43m       \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43msuppress_warnings\u001b[49m\n\u001b[1;32m   1176\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m   1178\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m metrics_levels, backtest_predictions\n",
      "File \u001b[0;32m~/varios/skforecast/skforecast/model_selection/_validation.py:920\u001b[0m, in \u001b[0;36m_backtesting_forecaster_multiseries\u001b[0;34m(forecaster, series, cv, metric, levels, add_aggregated_metric, exog, interval, interval_method, n_boot, use_in_sample_residuals, use_binned_residuals, random_state, n_jobs, verbose, show_progress, suppress_warnings)\u001b[0m\n\u001b[1;32m    905\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m pred, levels_predict\n\u001b[1;32m    907\u001b[0m kwargs_fit_predict_forecaster \u001b[38;5;241m=\u001b[39m {\n\u001b[1;32m    908\u001b[0m     \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mforecaster\u001b[39m\u001b[38;5;124m\"\u001b[39m: forecaster,\n\u001b[1;32m    909\u001b[0m     \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mstore_in_sample_residuals\u001b[39m\u001b[38;5;124m\"\u001b[39m: store_in_sample_residuals,\n\u001b[0;32m   (...)\u001b[0m\n\u001b[1;32m    918\u001b[0m     \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msuppress_warnings\u001b[39m\u001b[38;5;124m\"\u001b[39m: suppress_warnings\n\u001b[1;32m    919\u001b[0m }\n\u001b[0;32m--> 920\u001b[0m results \u001b[38;5;241m=\u001b[39m \u001b[43mParallel\u001b[49m\u001b[43m(\u001b[49m\u001b[43mn_jobs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mn_jobs\u001b[49m\u001b[43m)\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m    921\u001b[0m \u001b[43m    \u001b[49m\u001b[43mdelayed\u001b[49m\u001b[43m(\u001b[49m\u001b[43m_fit_predict_forecaster\u001b[49m\u001b[43m)\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata_fold\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdata_fold\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs_fit_predict_forecaster\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    922\u001b[0m \u001b[43m    \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mdata_fold\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mdata_folds\u001b[49m\n\u001b[1;32m    923\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    925\u001b[0m backtest_predictions \u001b[38;5;241m=\u001b[39m pd\u001b[38;5;241m.\u001b[39mconcat([result[\u001b[38;5;241m0\u001b[39m] \u001b[38;5;28;01mfor\u001b[39;00m result \u001b[38;5;129;01min\u001b[39;00m results], axis\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0\u001b[39m)\n\u001b[1;32m    926\u001b[0m backtest_levels \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mset\u001b[39m(chain(\u001b[38;5;241m*\u001b[39m[result[\u001b[38;5;241m1\u001b[39m] \u001b[38;5;28;01mfor\u001b[39;00m result \u001b[38;5;129;01min\u001b[39;00m results]))\n",
      "File \u001b[0;32m~/anaconda3/envs/skforecast_15_py12/lib/python3.12/site-packages/joblib/parallel.py:1918\u001b[0m, in \u001b[0;36mParallel.__call__\u001b[0;34m(self, iterable)\u001b[0m\n\u001b[1;32m   1916\u001b[0m     output \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_sequential_output(iterable)\n\u001b[1;32m   1917\u001b[0m     \u001b[38;5;28mnext\u001b[39m(output)\n\u001b[0;32m-> 1918\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m output \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mreturn_generator \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28;43mlist\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43moutput\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m   1920\u001b[0m \u001b[38;5;66;03m# Let's create an ID that uniquely identifies the current call. If the\u001b[39;00m\n\u001b[1;32m   1921\u001b[0m \u001b[38;5;66;03m# call is interrupted early and that the same instance is immediately\u001b[39;00m\n\u001b[1;32m   1922\u001b[0m \u001b[38;5;66;03m# re-used, this id will be used to prevent workers that were\u001b[39;00m\n\u001b[1;32m   1923\u001b[0m \u001b[38;5;66;03m# concurrently finalizing a task from the previous call to run the\u001b[39;00m\n\u001b[1;32m   1924\u001b[0m \u001b[38;5;66;03m# callback.\u001b[39;00m\n\u001b[1;32m   1925\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_lock:\n",
      "File \u001b[0;32m~/anaconda3/envs/skforecast_15_py12/lib/python3.12/site-packages/joblib/parallel.py:1847\u001b[0m, in \u001b[0;36mParallel._get_sequential_output\u001b[0;34m(self, iterable)\u001b[0m\n\u001b[1;32m   1845\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mn_dispatched_batches \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1\u001b[39m\n\u001b[1;32m   1846\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mn_dispatched_tasks \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1\u001b[39m\n\u001b[0;32m-> 1847\u001b[0m res \u001b[38;5;241m=\u001b[39m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m   1848\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mn_completed_tasks \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1\u001b[39m\n\u001b[1;32m   1849\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprint_progress()\n",
      "File \u001b[0;32m~/varios/skforecast/skforecast/model_selection/_validation.py:889\u001b[0m, in \u001b[0;36m_backtesting_forecaster_multiseries.<locals>._fit_predict_forecaster\u001b[0;34m(data_fold, forecaster, store_in_sample_residuals, levels, gap, interval, interval_method, n_boot, use_in_sample_residuals, use_binned_residuals, random_state, suppress_warnings)\u001b[0m\n\u001b[1;32m    887\u001b[0m \u001b[38;5;66;03m# NOTE: This is done after probabilistic predictions to avoid repeating the same checks.\u001b[39;00m\n\u001b[1;32m    888\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m interval \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mor\u001b[39;00m interval_method \u001b[38;5;241m!=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mconformal\u001b[39m\u001b[38;5;124m'\u001b[39m:\n\u001b[0;32m--> 889\u001b[0m     pred \u001b[38;5;241m=\u001b[39m \u001b[43mforecaster\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpredict\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m    890\u001b[0m \u001b[43m               \u001b[49m\u001b[43msteps\u001b[49m\u001b[43m             \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43msteps\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\n\u001b[1;32m    891\u001b[0m \u001b[43m               \u001b[49m\u001b[43mlevels\u001b[49m\u001b[43m            \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mlevels_predict\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\n\u001b[1;32m    892\u001b[0m \u001b[43m               \u001b[49m\u001b[43mlast_window\u001b[49m\u001b[43m       \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mlast_window_series\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    893\u001b[0m \u001b[43m               \u001b[49m\u001b[43mexog\u001b[49m\u001b[43m              \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mnext_window_exog\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    894\u001b[0m \u001b[43m               \u001b[49m\u001b[43msuppress_warnings\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43msuppress_warnings\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    895\u001b[0m \u001b[43m               \u001b[49m\u001b[43mcheck_inputs\u001b[49m\u001b[43m      \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43minterval\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mis\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01melse\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\n\u001b[1;32m    896\u001b[0m \u001b[43m           \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    898\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m interval \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m interval_method \u001b[38;5;241m!=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mconformal\u001b[39m\u001b[38;5;124m'\u001b[39m:\n\u001b[1;32m    899\u001b[0m     pred \u001b[38;5;241m=\u001b[39m pd\u001b[38;5;241m.\u001b[39mconcat([pred, pred_interval\u001b[38;5;241m.\u001b[39miloc[:, \u001b[38;5;241m1\u001b[39m:]], axis\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m)\n",
      "File \u001b[0;32m~/varios/skforecast/skforecast/recursive/_forecaster_recursive_multiseries.py:2429\u001b[0m, in \u001b[0;36mForecasterRecursiveMultiSeries.predict\u001b[0;34m(self, steps, levels, last_window, exog, suppress_warnings, check_inputs)\u001b[0m\n\u001b[1;32m   2385\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m   2386\u001b[0m \u001b[38;5;124;03mPredict n steps ahead. It is an recursive process in which, each prediction,\u001b[39;00m\n\u001b[1;32m   2387\u001b[0m \u001b[38;5;124;03mis used as a predictor for the next step. Only levels whose last window\u001b[39;00m\n\u001b[0;32m   (...)\u001b[0m\n\u001b[1;32m   2419\u001b[0m \n\u001b[1;32m   2420\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m   2422\u001b[0m set_skforecast_warnings(suppress_warnings, action\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mignore\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m   2424\u001b[0m (\n\u001b[1;32m   2425\u001b[0m     last_window,\n\u001b[1;32m   2426\u001b[0m     exog_values_dict,\n\u001b[1;32m   2427\u001b[0m     levels,\n\u001b[1;32m   2428\u001b[0m     prediction_index\n\u001b[0;32m-> 2429\u001b[0m ) \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_create_predict_inputs\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m   2430\u001b[0m \u001b[43m    \u001b[49m\u001b[43msteps\u001b[49m\u001b[43m        \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43msteps\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   2431\u001b[0m \u001b[43m    \u001b[49m\u001b[43mlevels\u001b[49m\u001b[43m       \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mlevels\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   2432\u001b[0m \u001b[43m    \u001b[49m\u001b[43mlast_window\u001b[49m\u001b[43m  \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mlast_window\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   2433\u001b[0m \u001b[43m    \u001b[49m\u001b[43mexog\u001b[49m\u001b[43m         \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mexog\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   2434\u001b[0m \u001b[43m    \u001b[49m\u001b[43mcheck_inputs\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mcheck_inputs\u001b[49m\n\u001b[1;32m   2435\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m   2437\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m warnings\u001b[38;5;241m.\u001b[39mcatch_warnings():\n\u001b[1;32m   2438\u001b[0m     warnings\u001b[38;5;241m.\u001b[39mfilterwarnings(\n\u001b[1;32m   2439\u001b[0m         \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mignore\u001b[39m\u001b[38;5;124m\"\u001b[39m, \n\u001b[1;32m   2440\u001b[0m         message\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mX does not have valid feature names\u001b[39m\u001b[38;5;124m\"\u001b[39m, \n\u001b[1;32m   2441\u001b[0m         category\u001b[38;5;241m=\u001b[39m\u001b[38;5;167;01mUserWarning\u001b[39;00m\n\u001b[1;32m   2442\u001b[0m     )\n",
      "File \u001b[0;32m~/varios/skforecast/skforecast/recursive/_forecaster_recursive_multiseries.py:2013\u001b[0m, in \u001b[0;36mForecasterRecursiveMultiSeries._create_predict_inputs\u001b[0;34m(self, steps, levels, last_window, exog, predict_probabilistic, use_in_sample_residuals, use_binned_residuals, check_inputs)\u001b[0m\n\u001b[1;32m   2006\u001b[0m last_window \u001b[38;5;241m=\u001b[39m last_window\u001b[38;5;241m.\u001b[39miloc[\n\u001b[1;32m   2007\u001b[0m     \u001b[38;5;241m-\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mwindow_size :, last_window\u001b[38;5;241m.\u001b[39mcolumns\u001b[38;5;241m.\u001b[39mget_indexer(levels)\n\u001b[1;32m   2008\u001b[0m ]\u001b[38;5;241m.\u001b[39mcopy()\n\u001b[1;32m   2009\u001b[0m _, last_window_index \u001b[38;5;241m=\u001b[39m preprocess_last_window(\n\u001b[1;32m   2010\u001b[0m                            last_window   \u001b[38;5;241m=\u001b[39m last_window,\n\u001b[1;32m   2011\u001b[0m                            return_values \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[1;32m   2012\u001b[0m                        )\n\u001b[0;32m-> 2013\u001b[0m prediction_index \u001b[38;5;241m=\u001b[39m \u001b[43mexpand_index\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m   2014\u001b[0m \u001b[43m                       \u001b[49m\u001b[43mindex\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mlast_window_index\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   2015\u001b[0m \u001b[43m                       \u001b[49m\u001b[43msteps\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43msteps\u001b[49m\n\u001b[1;32m   2016\u001b[0m \u001b[43m                   \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m   2018\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m exog \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m   2019\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(exog, \u001b[38;5;28mdict\u001b[39m):\n\u001b[1;32m   2020\u001b[0m         \u001b[38;5;66;03m# Empty dataframe to be filled with the exog values of each level\u001b[39;00m\n",
      "File \u001b[0;32m~/varios/skforecast/skforecast/utils/utils.py:1860\u001b[0m, in \u001b[0;36mexpand_index\u001b[0;34m(index, steps)\u001b[0m\n\u001b[1;32m   1857\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(index, pd\u001b[38;5;241m.\u001b[39mIndex):\n\u001b[1;32m   1859\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(index, pd\u001b[38;5;241m.\u001b[39mDatetimeIndex):\n\u001b[0;32m-> 1860\u001b[0m         new_index \u001b[38;5;241m=\u001b[39m \u001b[43mpd\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdate_range\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m   1861\u001b[0m \u001b[43m                        \u001b[49m\u001b[43mstart\u001b[49m\u001b[43m   \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mindex\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mindex\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfreq\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1862\u001b[0m \u001b[43m                        \u001b[49m\u001b[43mperiods\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43msteps\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1863\u001b[0m \u001b[43m                        \u001b[49m\u001b[43mfreq\u001b[49m\u001b[43m    \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mindex\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfreq\u001b[49m\n\u001b[1;32m   1864\u001b[0m \u001b[43m                    \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m   1865\u001b[0m     \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(index, pd\u001b[38;5;241m.\u001b[39mRangeIndex):\n\u001b[1;32m   1866\u001b[0m         new_index \u001b[38;5;241m=\u001b[39m pd\u001b[38;5;241m.\u001b[39mRangeIndex(\n\u001b[1;32m   1867\u001b[0m                         start \u001b[38;5;241m=\u001b[39m index[\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m] \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m,\n\u001b[1;32m   1868\u001b[0m                         stop  \u001b[38;5;241m=\u001b[39m index[\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m] \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m \u001b[38;5;241m+\u001b[39m steps\n\u001b[1;32m   1869\u001b[0m                     )\n",
      "File \u001b[0;32m~/anaconda3/envs/skforecast_15_py12/lib/python3.12/site-packages/pandas/core/indexes/datetimes.py:1008\u001b[0m, in \u001b[0;36mdate_range\u001b[0;34m(start, end, periods, freq, tz, normalize, name, inclusive, unit, **kwargs)\u001b[0m\n\u001b[1;32m   1005\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m freq \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m com\u001b[38;5;241m.\u001b[39many_none(periods, start, end):\n\u001b[1;32m   1006\u001b[0m     freq \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mD\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m-> 1008\u001b[0m dtarr \u001b[38;5;241m=\u001b[39m \u001b[43mDatetimeArray\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_generate_range\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m   1009\u001b[0m \u001b[43m    \u001b[49m\u001b[43mstart\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstart\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1010\u001b[0m \u001b[43m    \u001b[49m\u001b[43mend\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mend\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1011\u001b[0m \u001b[43m    \u001b[49m\u001b[43mperiods\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mperiods\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1012\u001b[0m \u001b[43m    \u001b[49m\u001b[43mfreq\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfreq\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1013\u001b[0m \u001b[43m    \u001b[49m\u001b[43mtz\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtz\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1014\u001b[0m \u001b[43m    \u001b[49m\u001b[43mnormalize\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mnormalize\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1015\u001b[0m \u001b[43m    \u001b[49m\u001b[43minclusive\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43minclusive\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1016\u001b[0m \u001b[43m    \u001b[49m\u001b[43munit\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43munit\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1017\u001b[0m \u001b[43m    \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m   1018\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m   1019\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m DatetimeIndex\u001b[38;5;241m.\u001b[39m_simple_new(dtarr, name\u001b[38;5;241m=\u001b[39mname)\n",
      "File \u001b[0;32m~/anaconda3/envs/skforecast_15_py12/lib/python3.12/site-packages/pandas/core/arrays/datetimes.py:463\u001b[0m, in \u001b[0;36mDatetimeArray._generate_range\u001b[0;34m(cls, start, end, periods, freq, tz, normalize, ambiguous, nonexistent, inclusive, unit)\u001b[0m\n\u001b[1;32m    460\u001b[0m         end \u001b[38;5;241m=\u001b[39m end\u001b[38;5;241m.\u001b[39mtz_localize(\u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[1;32m    462\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(freq, Tick):\n\u001b[0;32m--> 463\u001b[0m     i8values \u001b[38;5;241m=\u001b[39m \u001b[43mgenerate_regular_range\u001b[49m\u001b[43m(\u001b[49m\u001b[43mstart\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mend\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mperiods\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfreq\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43munit\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43munit\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    464\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m    465\u001b[0m     xdr \u001b[38;5;241m=\u001b[39m _generate_range(\n\u001b[1;32m    466\u001b[0m         start\u001b[38;5;241m=\u001b[39mstart, end\u001b[38;5;241m=\u001b[39mend, periods\u001b[38;5;241m=\u001b[39mperiods, offset\u001b[38;5;241m=\u001b[39mfreq, unit\u001b[38;5;241m=\u001b[39munit\n\u001b[1;32m    467\u001b[0m     )\n",
      "File \u001b[0;32m~/anaconda3/envs/skforecast_15_py12/lib/python3.12/site-packages/pandas/core/arrays/_ranges.py:56\u001b[0m, in \u001b[0;36mgenerate_regular_range\u001b[0;34m(start, end, periods, freq, unit)\u001b[0m\n\u001b[1;32m     54\u001b[0m iend \u001b[38;5;241m=\u001b[39m end\u001b[38;5;241m.\u001b[39m_value \u001b[38;5;28;01mif\u001b[39;00m end \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m     55\u001b[0m freq\u001b[38;5;241m.\u001b[39mnanos  \u001b[38;5;66;03m# raises if non-fixed frequency\u001b[39;00m\n\u001b[0;32m---> 56\u001b[0m td \u001b[38;5;241m=\u001b[39m \u001b[43mTimedelta\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfreq\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m     57\u001b[0m b: \u001b[38;5;28mint\u001b[39m\n\u001b[1;32m     58\u001b[0m e: \u001b[38;5;28mint\u001b[39m\n",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
     ]
    }
   ],
   "source": [
    "# Test backtesting\n",
    "# ==============================================================================\n",
    "params = {\n",
    "    \"initial_train_size\": [50, len(series_dict_train[\"id_1000\"])],\n",
    "    \"refit\": [True, False, 2],\n",
    "    \"fixed_train_size\": [True, False],\n",
    "    \"gap\": [0, 7],\n",
    "    \"levels\": [\n",
    "        None,\n",
    "        [\"id_1000\", \"id_1001\", \"id_1002\", \"id_1003\", \"id_1004\"],\n",
    "        \"id_1000\",\n",
    "        [\"id_1000\", \"id_1001\"],\n",
    "    ],\n",
    "    \"metrics\": [[\"mean_absolute_error\", \"mean_squared_error\"], \"mean_absolute_error\"],\n",
    "    \"allow_incomplete_fold\": [True, False],\n",
    "}\n",
    "\n",
    "params_grid = list(ParameterGrid(params))\n",
    "\n",
    "for params in tqdm(params_grid):\n",
    "    print(f\"Paramns: {params}\")\n",
    "\n",
    "    forecaster = ForecasterRecursiveMultiSeries(\n",
    "        estimator=LGBMRegressor(\n",
    "            n_estimators=2, random_state=123, verbose=-1, max_depth=2\n",
    "        ),\n",
    "        lags=14,\n",
    "        encoding=\"ordinal\",\n",
    "        dropna_from_series=False,\n",
    "        transformer_series=StandardScaler(),\n",
    "        transformer_exog=StandardScaler(),\n",
    "    )\n",
    "\n",
    "    cv = TimeSeriesFold(\n",
    "        initial_train_size=params[\"initial_train_size\"],\n",
    "        steps=24,\n",
    "        fixed_train_size=params[\"fixed_train_size\"],\n",
    "        gap=params[\"gap\"],\n",
    "        allow_incomplete_fold=params[\"allow_incomplete_fold\"],\n",
    "        refit=params[\"refit\"],\n",
    "    )\n",
    "\n",
    "    metrics_levels, backtest_predictions = backtesting_forecaster_multiseries(\n",
    "        forecaster=forecaster,\n",
    "        series=series_dict,\n",
    "        exog=exog_dict,\n",
    "        levels=params[\"levels\"],\n",
    "        cv = cv,\n",
    "        metric=params[\"metrics\"],\n",
    "        show_progress=False,\n",
    "        suppress_warnings=True,\n",
    "        n_jobs=\"auto\"\n",
    "    )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "ba17e70593a34e97b174e172b315fc20",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/3 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Test Bayesian search\n",
    "# ==============================================================================\n",
    "forecaster = ForecasterRecursiveMultiSeries(\n",
    "    estimator=LGBMRegressor(n_estimators=10, random_state=123, verbose=-1, max_depth=2),\n",
    "    lags=14,\n",
    "    encoding=\"ordinal\",\n",
    "    dropna_from_series=False,\n",
    "    transformer_series=StandardScaler(),\n",
    "    transformer_exog=StandardScaler(),\n",
    ")\n",
    "\n",
    "lags_grid = [[5], [1, 7, 14]]\n",
    "\n",
    "\n",
    "def search_space(trial):\n",
    "    search_space = {\n",
    "        \"n_estimators\": trial.suggest_int(\"n_estimators\", 2, 5),\n",
    "        \"max_depth\": trial.suggest_int(\"max_depth\", 2, 5),\n",
    "        \"lags\": trial.suggest_categorical(\"lags\", lags_grid),\n",
    "    }\n",
    "\n",
    "    return search_space\n",
    "\n",
    "\n",
    "with warnings.catch_warnings():\n",
    "    warnings.filterwarnings(\"ignore\", category=UserWarning, module=\"optuna\")\n",
    "\n",
    "    cv = TimeSeriesFold(\n",
    "        initial_train_size=len(series_dict_train[\"id_1000\"]),\n",
    "        steps=10,\n",
    "        refit=False,\n",
    "    )\n",
    "\n",
    "    results_search, best_trial = bayesian_search_forecaster_multiseries(\n",
    "        forecaster=forecaster,\n",
    "        series=series_dict,\n",
    "        exog=exog_dict,\n",
    "        search_space=search_space,\n",
    "        metric=\"mean_absolute_error\",\n",
    "        cv=cv,\n",
    "        n_trials=3,\n",
    "        return_best=False,\n",
    "        show_progress=True,\n",
    "        verbose=False,\n",
    "        suppress_warnings=True,\n",
    "    )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "00714073eafb401485f893ff8ce998e7",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "lags grid:   0%|          | 0/2 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "b8dda3a6a3a04a91b41235a450fc15d7",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "params grid:   0%|          | 0/4 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Test Grid Search\n",
    "# ==============================================================================\n",
    "forecaster = ForecasterRecursiveMultiSeries(\n",
    "    estimator=LGBMRegressor(n_estimators=10, random_state=123, verbose=-1, max_depth=2),\n",
    "    lags=14,\n",
    "    encoding=\"ordinal\",\n",
    "    dropna_from_series=False,\n",
    "    transformer_series=StandardScaler(),\n",
    "    transformer_exog=StandardScaler(),\n",
    ")\n",
    "\n",
    "lags_grid = [[5], [1, 7, 14]]\n",
    "\n",
    "param_grid = {\n",
    "    \"learning_rate\": [0.1],\n",
    "    \"n_estimators\": [10, 20],\n",
    "    \"max_depth\": [2, 5],\n",
    "}\n",
    "\n",
    "cv = TimeSeriesFold(\n",
    "        initial_train_size=len(series_dict_train[\"id_1000\"]),\n",
    "        steps=10,\n",
    "        refit=False,\n",
    "    )\n",
    "\n",
    "results_search = grid_search_forecaster_multiseries(\n",
    "    forecaster=forecaster,\n",
    "    series=series_dict,\n",
    "    exog=exog_dict,\n",
    "    lags_grid=lags_grid,\n",
    "    param_grid=param_grid,\n",
    "    metric=\"mean_absolute_error\",\n",
    "    cv=cv,\n",
    "    return_best=False,\n",
    "    show_progress=True,\n",
    "    verbose=False,\n",
    "    suppress_warnings=True,\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "84cfe420d57b4afebb489909fcd9c8a1",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "lags grid:   0%|          | 0/2 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "b742c3d6be3a424ba1ef78fbc377a153",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "params grid:   0%|          | 0/4 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "7e1e229c9c1f4134be98dd85bd38209e",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "lags grid:   0%|          | 0/2 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "2c89be9d5582419893e761cdbc04404b",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "params grid:   0%|          | 0/4 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Test equivalent results grid search with backtesting and one-step-ahead\n",
    "# ==============================================================================\n",
    "forecaster = ForecasterRecursiveMultiSeries(\n",
    "    estimator=LGBMRegressor(n_estimators=10, random_state=123, verbose=-1, max_depth=2),\n",
    "    lags=14,\n",
    "    encoding=\"ordinal\",\n",
    "    dropna_from_series=False,\n",
    "    transformer_series=StandardScaler(),\n",
    "    transformer_exog=StandardScaler(),\n",
    ")\n",
    "\n",
    "lags_grid = [[5], [1, 7, 14]]\n",
    "\n",
    "param_grid = {\n",
    "    \"learning_rate\": [0.1],\n",
    "    \"n_estimators\": [10, 20],\n",
    "    \"max_depth\": [2, 5],\n",
    "}\n",
    "\n",
    "metrics = [\n",
    "        \"mean_absolute_error\",\n",
    "        \"mean_squared_error\",\n",
    "        mean_absolute_percentage_error,\n",
    "        mean_absolute_scaled_error,\n",
    "        root_mean_squared_scaled_error,\n",
    "    ]\n",
    "\n",
    "cv = TimeSeriesFold(\n",
    "        initial_train_size=len(series_dict_train[\"id_1000\"]),\n",
    "        steps=1,\n",
    "        refit=False,\n",
    "    )\n",
    "\n",
    "results_backtesting = grid_search_forecaster_multiseries(\n",
    "    forecaster=forecaster,\n",
    "    series=series_dict,\n",
    "    exog=exog_dict,\n",
    "    lags_grid=lags_grid,\n",
    "    param_grid=param_grid,\n",
    "    metric=metrics,\n",
    "    cv=cv,\n",
    "    return_best=False,\n",
    "    show_progress=True,\n",
    "    verbose=False,\n",
    "    suppress_warnings=True,\n",
    ")\n",
    "\n",
    "cv = OneStepAheadFold(\n",
    "    initial_train_size=len(series_dict_train[\"id_1000\"]),\n",
    ")\n",
    "results_one_step_ahead = grid_search_forecaster_multiseries(\n",
    "    forecaster=forecaster,\n",
    "    series=series_dict,\n",
    "    exog=exog_dict,\n",
    "    lags_grid=lags_grid,\n",
    "    param_grid=param_grid,\n",
    "    metric=metrics,\n",
    "    cv=cv,\n",
    "    return_best=False,\n",
    "    show_progress=True,\n",
    "    verbose=False,\n",
    "    suppress_warnings=True,\n",
    ")\n",
    "\n",
    "pd.testing.assert_frame_equal(results_backtesting, results_one_step_ahead)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "skforecast_15_py12",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.9"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
